package com.je.app.view.popUp;

import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JLabel;

import java.awt.Font;

import javax.swing.SwingConstants;
import javax.swing.JTextField;
import javax.swing.JButton;

import java.awt.SystemColor;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JDialog;
import javax.swing.UIManager;
import javax.swing.JComboBox;
import javax.swing.JSpinner;

import com.je.app.control.ControlHabitacion;
import com.je.app.control.ControlStock;
import com.je.app.control.ControlTurno;
import com.je.app.view.MainFrame;
import com.je.app.view.MainFrame.MessageType;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.text.ParseException;

import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.text.InternationalFormatter;
import javax.swing.text.MaskFormatter;

public class AgregarConsumicion extends JDialog{
	private JTextField fieldPrecio;
	private JButton button;
	private JComboBox<String> comboProductos;
	private JTextField fieldImporte;
	private JSpinner spinner;
	
	public AgregarConsumicion (final String nombreHabitacion, String [] consumiciones, final String tipoTurno){
		
		setSize(new Dimension(480, 280));		
		getContentPane().setLayout(null);
		setLocationRelativeTo(null);
		setTitle("Agregar consumici\u00F3n");
		
		JLabel label = new JLabel("Producto:");
		label.setHorizontalAlignment(SwingConstants.LEFT);
		label.setFont(new Font("Tahoma", Font.PLAIN, 12));
		label.setBounds(73, 38, 108, 26);
		getContentPane().add(label);
		
		JLabel label_1 = new JLabel("Cantidad:");
		label_1.setHorizontalAlignment(SwingConstants.LEFT);
		label_1.setFont(new Font("Tahoma", Font.PLAIN, 12));
		label_1.setBounds(73, 112, 61, 26);
		getContentPane().add(label_1);
		
		JLabel label_2 = new JLabel("Importe:");
		label_2.setHorizontalAlignment(SwingConstants.LEFT);
		label_2.setFont(new Font("Tahoma", Font.PLAIN, 12));
		label_2.setBounds(73, 149, 54, 26);
		getContentPane().add(label_2);
		
		fieldPrecio = new JTextField();
		fieldPrecio.setHorizontalAlignment(SwingConstants.CENTER);
		fieldPrecio.setFont(new Font("Tahoma", Font.PLAIN, 12));
		fieldPrecio.setEditable(false);
		fieldPrecio.setColumns(10);
		fieldPrecio.setBounds(137, 75, 84, 26);
		getContentPane().add(fieldPrecio);
		
		button = new JButton("Editar");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(button.getText().equals("Editar")){
					fieldPrecio.setEditable(true);
					button.setText("Aceptar");
				}
				else{
					
					try{
						double precioUnitario = new Double(fieldPrecio.getText());
						double cantidad = new Double(""+spinner.getValue());
						fieldImporte.setText(""+(cantidad * precioUnitario));
					}catch(Exception exc){
						exc.printStackTrace();
					}

					//verificar valor y guardar
					double precio = 0;
					String nombreConsumicion = null;
					boolean validado = true;
					try{
						precio = new Double(fieldPrecio.getText());
					}
					catch(Exception exc){
						MainFrame.getInstance().showMessage(MessageType.ERROR, "El precio ingresado no es v\u00E1lido");
						validado = false;
					}
					
					nombreConsumicion = (String) comboProductos.getSelectedItem();
					if(comboProductos.getSelectedIndex()<=0){
						MainFrame.getInstance().showMessage(MessageType.ERROR, "Debe seleccionar un producto");
						validado = false;
					}
					
					if(validado){
						ControlStock.getInstance().modificarPrecioConsumicion(precio, nombreConsumicion);
						button.setText("Editar");
						fieldPrecio.setEditable(false);
					}
				}
			}
		});
		button.setForeground(Color.BLACK);
		button.setFont(new Font("Tahoma", Font.PLAIN, 12));
		button.setBorder(UIManager.getBorder("Button.border"));
		button.setBackground(SystemColor.activeCaptionBorder);
		button.setBounds(248, 74, 84, 27);
		getContentPane().add(button);
		
		comboProductos = new JComboBox <String>(new DefaultComboBoxModel<String> (consumiciones));
		comboProductos.setBounds(137, 39, 195, 26);
		getContentPane().add(comboProductos);
		comboProductos.addActionListener(new ActionListener(){

			public void actionPerformed(ActionEvent arg0) {
				if(comboProductos.getSelectedIndex()<=0){
					fieldPrecio.setText("");
					fieldImporte.setText("");
				}
				else{
					fieldPrecio.setText("" + ControlStock.getInstance().obtenerPrecioConsumicion((String) comboProductos.getSelectedItem()));

					try{
						double precioUnitario = new Double(fieldPrecio.getText());
						double cantidad = new Double(""+spinner.getValue());
						fieldImporte.setText(""+(cantidad * precioUnitario));
					}catch(Exception exc){
						exc.printStackTrace();
					}

				}				
			}
			
		});
		
		spinner = new JSpinner();
		spinner.setModel(new SpinnerNumberModel(1, 1, 10, 1));
		spinner.setBounds(137, 113, 84, 26);
		getContentPane().add(spinner);
		spinner.addChangeListener(new ChangeListener() {      
			  
			public void stateChanged(ChangeEvent e) {
				
				try{
					double precioUnitario = new Double(fieldPrecio.getText());
					double cantidad = new Double(""+spinner.getValue());
					fieldImporte.setText(""+(cantidad * precioUnitario));
				}catch(Exception exc){
					exc.printStackTrace();
				}
				
			}
			
		});
		
		JButton button_1 = new JButton("Aceptar");
		button_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//verificar seleccion antes 
				if(comboProductos.getSelectedIndex()<=0){
					MainFrame.getInstance().showMessage(MessageType.ERROR, "Debe seleccionar un producto");
				}
				else{
					if(tipoTurno.equals("TURNO_NO_FINALIZADO"))
						ControlHabitacion.getInstance().agregarConsumicion((Integer)spinner.getValue(), comboProductos.getSelectedIndex(), nombreHabitacion);
					else 
						ControlTurno.getInstance().agregarConsumicion((Integer)spinner.getValue(), (String) comboProductos.getSelectedItem(), nombreHabitacion);
					dispose();
				}
			}
		});
		button_1.setForeground(Color.BLACK);
		button_1.setFont(new Font("Tahoma", Font.PLAIN, 12));
		button_1.setBorder(UIManager.getBorder("Button.border"));
		button_1.setBackground(SystemColor.activeCaptionBorder);
		button_1.setBounds(137, 204, 84, 26);
		getContentPane().add(button_1);
		
		JButton button_2 = new JButton("Cancelar");
		button_2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				dispose();
			}
		});
		button_2.setForeground(Color.BLACK);
		button_2.setFont(new Font("Tahoma", Font.PLAIN, 12));
		button_2.setBorder(UIManager.getBorder("Button.border"));
		button_2.setBackground(SystemColor.activeCaptionBorder);
		button_2.setBounds(248, 204, 84, 26);
		getContentPane().add(button_2);
		
		JLabel lblPrecio = new JLabel("Precio:");
		lblPrecio.setHorizontalAlignment(SwingConstants.LEFT);
		lblPrecio.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblPrecio.setBounds(73, 75, 54, 26);
		getContentPane().add(lblPrecio);
		
		fieldImporte = new JTextField();
		fieldImporte.setHorizontalAlignment(SwingConstants.CENTER);
		fieldImporte.setFont(new Font("Tahoma", Font.PLAIN, 12));
		fieldImporte.setEditable(false);
		fieldImporte.setColumns(10);
		fieldImporte.setBounds(137, 149, 84, 26);
		getContentPane().add(fieldImporte);
		setVisible(true);
		
	}
}
